/**
 * @description: 用户认证层面的一些状态管理(组合式写法)，例如token的管理等
 * 示例：
 * 1. token的管理
 * 2. token的过期时间
 * 3. token的无操作时间
 * @author: FuntrySunny
 * @return {*}
 */

import { defineStore } from "pinia";
import { ref } from "vue";

const TOKEN_EXPIRE_TIME = Number(import.meta.env.VITE_TOKEN_EXPIRE_TIME); // token有效期1天
const INACTIVE_EXPIRE_TIME = Number(import.meta.env.VITE_INACTIVE_EXPIRE_TIME); // 无操作超时时间10分钟

export const useAuthStore = defineStore("auth",() =>{
    const token = ref("");
    const tokenExpiredTime = ref(0);
    const lastActiveTime = ref(0);

    const setToken = (val:string,timestampVal:number) =>{
        token.value = val;
        tokenExpiredTime.value = timestampVal + INACTIVE_EXPIRE_TIME; 
        lastActiveTime.value = timestampVal;
    }

    const getToken = () =>{
        return token.value; 
    }

    return {
        token,
        tokenExpiredTime,
        lastActiveTime,
        setToken,
        getToken,
    }
},{
    persist: true,
})